﻿namespace KLF.Lib.Browser
{
    #region Using Statements

    using System;
    using System.Linq;
    using System.Text;

    using System.Collections.Generic;
    using KLF.Lib.Browser.JavaScriptHelpers;

    #endregion

    public class BrowserOptions
    {
        /// <summary>
        /// The user agent associated with this web browser agent.
        /// </summary>
        public UserAgent Agent { get; set; }

        /// <summary>
        /// The directory on the local hard drive for which to store RAM.  This
        /// directory need not exist, but it has to be set in order for cache to
        /// work at all.
        /// </summary>
        public string CacheDirectory { get; set; }

        /// <summary>
        /// The maximum amount of space that can be used on the hard drive
        /// for long-term cache storage.
        /// </summary>
        public int CacheMaxDiskSize { get; set; }

        /// <summary>
        /// The max amount of RAM to use for caching.
        /// </summary>
        public int CacheMaxMemorySize { get; set; }

        /// <summary>
        /// The directory that downloaded content will go to.  If this is not
        /// set then downloads are not possible.
        /// </summary>
        public string DownloadDirectory { get; set; }

        /// <summary>
        /// When set, the script may contain callouts to CLR types.
        /// </summary>
        public bool EnableClr { get; set; }

        /// <summary>
        /// When enabled, the browser will load external stylesheets.
        /// </summary>
        public bool EnableCss { get; set; }

        /// <summary>
        /// When true, additional debugging information will be displayed
        /// in the console.
        /// </summary>
        public bool EnableDebug { get; set; }

        /// <summary>
        /// When true, the browser is allowed to download links to the local 
        /// hard drive.
        /// </summary>
        public bool EnableDownload { get; set; }

        /// <summary>
        /// Enable the execution of Javascript in documents loaded.
        /// </summary>
        public bool EnableJavascript { get; set; }

        /// <summary>
        /// The maximum timeout on any requests made (in milliseconds).
        /// </summary>
        public int Timeout { get; set; }
    }
}
